﻿using LeShiTao_Library.WeChat.Public_WC;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Top.Api.Request;
using Top.Api.Response;

namespace TB_WS.Class
{
    public class Top_Logic
    {
        private static LeShiTao_Library.TB_Top.TB_Util TB_TOP;
        private static string Seller_Nicks;
        private static string Rate_String = "亲 感谢您对我们的支持 祝您使用愉快";
        public Top_Logic(string Seller_Nick)
        {
            Seller_Nicks = Seller_Nick;
            DataSet TB_INFO = Class.Seller_Manage.select_Seller_Info(Seller_Nick);
            string TB_AppKey = TB_INFO.Tables[0].Rows[0][5].ToString();
            string TB_Secret= TB_INFO.Tables[0].Rows[0][6].ToString();
            string TB_Session= TB_INFO.Tables[0].Rows[0][7].ToString();
            TB_TOP = new LeShiTao_Library.TB_Top.TB_Util(
                TB_AppKey,TB_Secret, TB_Session);
        }

        public TraderateImprImprwordByfeedidGetResponse Get_Rate_Feed_TLBGR(string Tid)
        {
            TraderateImprImprwordByfeedidGetResponse Dis = TB_TOP.GET_RATE_DIS(Tid);
            return Dis;
        }

        public string Get_Rate_Feed(string Tid)
        {
            TraderateImprImprwordByfeedidGetResponse Dis = TB_TOP.GET_RATE_DIS(Tid);
            if(Dis.ErrMsg!=null)
            {
                return "1#订单号：" + Tid + " 买家给出的是默认评价 无法获取评价内容 参数："+Dis.ErrMsg.ToString();
            }
            else
            {
                string RT_String= "0#订单号：" + Tid + " \n评价：" + Rate_State(Dis.ImprFeed.Rate.ToString()) + "\n买家账号：" + Dis.ImprFeed.Nick.ToString() +
                    "\n评价内容：" + Dis.ImprFeed.FeedInfoList[0].Feedback.ToString();
                //Class.Unit.INSERT_LOG("评价提前查询 卖家昵称：" + Seller_Nicks + "\t" + RT_String);
                if (Rate_State(Dis.ImprFeed.Rate.ToString()) == "差评"|| Rate_State(Dis.ImprFeed.Rate.ToString()) == "中评")
                {
                    if (Class.Rate_Control.Get_Rate_Count(Dis.ImprFeed.Nick.ToString(), Dis.ImprFeed.FeedInfoList[0].Feedback.ToString()) == 0)
                    {
                        //没有录入过这个评价
                        Class.Rate_Control.INSERT_Rate(Convert.ToInt32(Class.Seller_Manage.select_Seller_Info(Seller_Nicks).Tables[0].Rows[0][0].ToString())
                            , Dis.ImprFeed.Nick.ToString(), Tid, Rate_State(Dis.ImprFeed.Rate.ToString()), Dis.ImprFeed.FeedInfoList[0].Feedback.ToString());
                    }
                    else
                    { }
                }
                return RT_String;
            }
        }

        private static string Rate_State(string Rate_Num)
        {
            if(Rate_Num=="1")
            {
                return "好评";
            }
            else if (Rate_Num == "0")
            {
                return "中评";
            }
            else if (Rate_Num == "-1")
            {
                return "差评";
            }
            else
            {
                return "未知评价";
            }
        }
        /// <summary>
        /// 提交订单号组字符串获取是否可以提供返现
        /// </summary>
        /// <param name="Tids">订单号组 格式为 Tid,Tid,Tid </param>
        /// <returns>范围值为 是否可返现状态#异常原因   0为正常  1为异常  例如：1#订单号：XXX未评价</returns>
        public string GET_Rate_State(string Tids)
        {
            int Rate_Type=0;//控制是否可返现状态 0为可以返现 1为异常状态
            string Rate_Contect="";//无法返现的原因注释

            string[] Tid_List = Tids.Split(',');
            for (int i = 0; i < Tid_List.Length; i++)
            {
                if (get_rate_Type(Tid_List[i]) == true)
                {
                    //已评价
                    int rate_rate = get_rate_rate(Tid_List[i]);
                    if (rate_rate == 1)
                    {
                        //好评 可以返现
                    }
                    else
                    {
                        //有中差评
                        Rate_Type = 1;//设置返现状态为异常
                        Rate_Contect = Rate_Contect + "\n订单号：" + Tid_List[i] + " 的评价为中差评，无法发放红包，请修改评价后再次扫描二维码发红包";
                    }
                }
                else
                {
                    //未评价
                   
                    Rate_Type = 1;//设置返现状态为异常
                    if (get_Buyer_rate(Tid_List[i]) == true)
                    {
                        //没有给五星的评价
                        //Rate_Contect = Rate_Contect + "\n订单号：" + Tid_List[i] + " 的订单亲已经评价了，但是亲没有给5星喔~~";
                        Rate_Type = 0;
                        //没有给5星能否好评返现的开关 0为允许  1为不允许
                    }
                    else
                    {
                        if (get_Gods_WhiteList_Type(Tid_List[i]) == 1)
                        {
                            //遇到白名单商品  0为允许  1为不允许
                            Rate_Type = 0;
                        }
                        else
                        {
                            Rate_Contect = Rate_Contect + "\n订单号：" + Tid_List[i] + " 的订单您还没有提交评价，麻烦亲给个好评喔 然后再次扫描二维码即可给您发红包";
                        }
                    }
                }
            }
            return Rate_Type.ToString() +"#"+ Rate_Contect.ToString();
        }
        public string Check_TB_Tids(string Tids)
        {
            int Rate_Type = 0;//控制是否可返现状态 0为可以返现 1为异常状态
            string Rate_Contect = "";//无法返现的原因注释

            for(int i=0;i<Tids.Split(',').Length;i++)
            {
                TradeFullinfoGetResponse Trade_Info= TB_TOP.GET_Trade_Fullinfo(Tids.Split(',')[i].ToString());
                if(Trade_Info.Trade==null)
                {
                    Rate_Type = 1;
                    Rate_Contect = Rate_Contect + "    订单号：" + Tids.Split(',')[i].ToString() + "不是本店淘宝订单号，或已超过3个月";
                }
                else
                { }
            }
            return Rate_Type.ToString() + "#" + Rate_Contect;
        }

        /// <summary>
        /// 根据订单号获取买家Nick-淘宝ID
        /// </summary>
        /// <param name="Tids">订单号列表</param>
        /// <returns></returns>
        public string Get_Nick_TB_Tids(string Tids)
        {
            int Rate_Type = 0;//控制是否可返现状态 0为可以返现 1为异常状态
            string Rate_Contect = "";//无法返现的原因注释

            for (int i = 0; i < Tids.Split(',').Length; i++)
            {
                TradeFullinfoGetResponse Trade_Info = TB_TOP.GET_Trade_Fullinfo(Tids.Split(',')[i].ToString());
                if (Trade_Info.Trade == null)
                {
                    Rate_Type = 1;
                    Rate_Contect = Rate_Contect + "    订单号：" + Tids.Split(',')[i].ToString() + "不是本店淘宝订单号，或已超过3个月";
                }
                else
                {
                    if (Rate_Contect == Trade_Info.Trade.BuyerNick.ToString())
                    {

                    }
                    else
                    {
                        Rate_Contect = Rate_Contect + Trade_Info.Trade.BuyerNick.ToString();
                    }
                }
            }
            return Rate_Type.ToString() + "#" + Rate_Contect;
        }

        public void ADD_RATE(string Tids,string Content)
        {
            TB_TOP.ADD_Rate(Tids, Content);
        }

        /// <summary>
        /// 检测订单是否支持返现，状态为追加评价
        /// </summary>
        /// <param name="Tids"></param>
        /// <returns></returns>
        public string GET_Rate_State_Appened_Rate_2(string Tids,string WX_User_Server)
        {
            int Rate_Type = 0;//控制是否可返现状态 0为可以返现 1为异常状态
            string Rate_Contect = "";//无法返现的原因注释

            string[] Tid_List = Tids.Split(',');

            for (int i = 0; i < Tid_List.Length; i++)
            {
                if (TB_TOP.GET_Trade_Fullinfo(Tid_List[i]).IsError == true)
                {
                    Rate_Type = 1;
                    Rate_Contect = Rate_Contect + "亲 订单号：" +
                        Tid_List[i].Trim().ToString() +
                        " 不正确 淘宝后台无法检测到该订单号，请截图联系我们客服 或截图直接回复图片，谢谢~";
                }
                else
                {
                    if (get_Gods_WhiteList_Type(Tid_List[i]) == 1)
                    {
                        if (Rate_Type == 1)
                        {
                            Rate_Type = 1;
                        }
                        else
                        {
                            Rate_Type = 0;
                        }
                    }
                    else
                    {
                        if (get_Buyer_rate(Tid_List[i]) == true)
                        {
                            //买家已评价
                            if (get_Seller_rate(Tid_List[i]) == true)
                            {
                                //卖家也已经评价
                                if (get_Buyer_Rate_Appened_Rate_2(Tid_List[i]) == true)
                                {
                                    //买家已经追评
                                }
                                else
                                {
                                    Rate_Type = 1;
                                    Rate_Contect = Rate_Contect + "亲 订单号：" +
                                        Tid_List[i].Trim().ToString() +
                                        " 的评价未检测到追加评价，请追加评价后再次扫描二维码喔~ 谢谢";
                                }
                            }
                            else
                            {
                                if (TB_TOP.GET_Trade_Fullinfo(Tid_List[i].ToString()).Trade.Orders.Count > 1)
                                {
                                    //有子订单
                                    TB_TOP.ADD_List_Rate(Tid_List[i].ToString(), Rate_String);
                                }
                                else
                                {
                                    //卖家暂未评价 开启评价--无子订单
                                    TB_TOP.ADD_Rate(Tid_List[i].ToString(), Rate_String);
                                }
                            }
                            TraderatesGetResponse Rate_Info = TB_TOP.GET_BUYER_RATE_INFO(Tid_List[i].Trim().ToString());
                            if (Rate_Info.TotalResults == 0)
                            {
                                //找不到评价信息
                                Rate_Type = 1;
                                Rate_Contect = Rate_Contect + "亲 订单号：" +
                                    Tid_List[i].Trim().ToString() +
                                    " 的评价信息有异常，请联系我们的客服喔 或者直接在这里回复即可，我们看到后会第一时间联系到您，并且为您处理红包事宜 谢谢亲~";
                            }
                            else
                            {
                                //能找到评价信息
                                if (Rate_Info.TradeRates[0].Result == "good")
                                {
                                    //好评
                                    if (get_Buyer_Rate_Appened_Rate_2(Tid_List[i]) == true)
                                    {
                                        //买家已经追评
                                    }
                                    else
                                    {
                                        Rate_Type = 1;
                                        Rate_Contect = Rate_Contect + "亲 订单号：" +
                                            Tid_List[i].Trim().ToString() +
                                            " 的评价未检测到追加评价，请追加评价后再次扫描二维码喔~ 谢谢";
                                    }
                                }
                                else
                                {
                                    //中差评
                                    Rate_Type = 1;
                                    Rate_Contect = Rate_Contect + "亲 订单号：" +
                                        Tid_List[i].Trim().ToString() +
                                        " 的评价为中差评 麻烦亲修改评价后发红包喔~ 多谢亲哈";

                                    int Seller_ID = Convert.ToInt32(Class.Seller_Manage.select_Seller_Info(Seller_Nicks).Tables[0].Rows[0][0].ToString());
                                    
                                    DataSet WX_User_DST = Class.WX_User_ID.Get_WX_User(Seller_ID);
                                    for(int j=0;j< WX_User_DST.Tables[0].Rows.Count;j++)
                                    {
                                        LeShiTao_Library.WeChat.Public_WC.Template_Message TM =new Template_Message(WX_User_Server);
                                        string RT = TM.TM_Get_Rate_Message(WX_User_Server, WX_User_DST.Tables[0].Rows[j][2].ToString(), Seller_Nicks+"  中差评提醒", Tid_List[i].Trim().ToString(), "给出的评价为中差评，请知悉",
                                            Class.Template_Manage.get_Temp_ID(WX_User_Server, "OPENTM205102209").ToString());
                                    }

                                    

                                }
                            }
                        }
                        else
                        {
                            //买家还没有评价
                            Rate_Type = 1;
                            Rate_Contect = Rate_Contect + "亲 订单号：" +
                                Tid_List[i].Trim().ToString() +
                                " 的订单您还没有评价喔 麻烦亲评价后再次扫描二维码获取红包喔";
                        }
                    }
                }
            }
            //Unit.INSERT_LOG("订单号：" + Tids + "  Rate_Type：" + Rate_Type.ToString());
            return Rate_Type.ToString() + "#" + Rate_Contect.ToString();
        }

        public string GET_Rate_State_New(string Tids, string WX_User_Server)
        {
            int Rate_Type = 0;//控制是否可返现状态 0为可以返现 1为异常状态
            string Rate_Contect = "";//无法返现的原因注释

            string[] Tid_List = Tids.Split(',');

            for (int i = 0; i < Tid_List.Length; i++)
            {
                if (TB_TOP.GET_Trade_Fullinfo(Tid_List[i]).IsError == true)
                {
                    Rate_Type = 1;
                    Rate_Contect = Rate_Contect + "亲 订单号：" +
                        Tid_List[i].Trim().ToString() +
                        " 不正确 淘宝后台无法检测到该订单号，请截图联系我们客服 或截图直接回复图片，谢谢~\n\n错误TOP：\n"+
                        TB_TOP.GET_Trade_Fullinfo(Tid_List[i]).SubErrMsg.ToString();
                }
                else
                {
                    if (get_Gods_WhiteList_Type(Tid_List[i]) == 1)
                    {
                        if (Rate_Type == 1)
                        {
                            Rate_Type = 1;
                        }
                        else
                        {
                            Rate_Type = 0;
                        }
                    }
                    else
                    {
                        if (get_Buyer_rate(Tid_List[i]) == true)
                        {
                            //买家已评价
                            if (get_Seller_rate(Tid_List[i]) == true)
                            {
                                //卖家也已经评价
                            }
                            else
                            {
                                if (TB_TOP.GET_Trade_Fullinfo(Tid_List[i].ToString()).Trade.Orders.Count > 1)
                                {
                                    //有子订单
                                    TB_TOP.ADD_List_Rate(Tid_List[i].ToString(), Rate_String);
                                }
                                else
                                {
                                    //卖家暂未评价 开启评价--无子订单
                                    TB_TOP.ADD_Rate(Tid_List[i].ToString(), Rate_String);
                                }
                            }
                            TraderatesGetResponse Rate_Info = TB_TOP.GET_BUYER_RATE_INFO(Tid_List[i].Trim().ToString());
                            if (Rate_Info.TotalResults == 0)
                            {
                                //找不到评价信息
                                Rate_Type = 1;
                                Rate_Contect = Rate_Contect + "亲 订单号：" +
                                    Tid_List[i].Trim().ToString() +
                                    " 的评价信息有异常，请联系我们的客服喔 或者直接在这里回复即可，我们看到后会第一时间联系到您，并且为您处理红包事宜 谢谢亲~";
                            }
                            else
                            {
                                //能找到评价信息
                                if (Rate_Info.TradeRates[0].Result == "good")
                                {
                                    //好评
                                }
                                else
                                {
                                    //中差评
                                    Rate_Type = 1;
                                    Rate_Contect = Rate_Contect + "亲 订单号：" +
                                        Tid_List[i].Trim().ToString() +
                                        " 的评价为中差评 麻烦亲修改评价后发红包喔~ 多谢亲哈";

                                    int Seller_ID = Convert.ToInt32(Class.Seller_Manage.select_Seller_Info(Seller_Nicks).Tables[0].Rows[0][0].ToString());

                                    DataSet WX_User_DST = Class.WX_User_ID.Get_WX_User(Seller_ID);
                                    for (int j = 0; j < WX_User_DST.Tables[0].Rows.Count; j++)
                                    {
                                        LeShiTao_Library.WeChat.Public_WC.Template_Message TM = new Template_Message(WX_User_Server);
                                        string Rate_String = get_rate_string(Tid_List[i].Trim().ToString());
                                        string WX_User_ID_String = WX_User_DST.Tables[0].Rows[j][2].ToString();
                                        string RT = TM.TM_Get_Rate_Message(WX_User_Server, WX_User_ID_String, Seller_Nicks + "  中差评提醒", Tid_List[i].Trim().ToString(), "给出的评价为中差评评价内容：  "+ Rate_String + "，请知悉",
                                            Class.Template_Manage.get_Temp_ID(WX_User_Server, "OPENTM205102209").ToString());
                                        Unit.INSERT_LOG(RT);
                                        //string RT2 = TM.TM_Get_Rate_Message(WX_User_Server, WX_User_ID_String, Seller_Nicks + "  中差评提醒", Tid_List[i].Trim().ToString(), "给出的评价为中差评请知悉");
                                    }
                                }
                            }
                        }
                        else
                        {
                            //买家还没有评价
                            Rate_Type = 1;
                            Rate_Contect = Rate_Contect + "亲 订单号：" +
                                Tid_List[i].Trim().ToString() +
                                " 的订单您还没有评价喔 麻烦亲评价后再次扫描二维码获取红包喔";
                        }
                    }
                }
            }
            Unit.INSERT_LOG("订单号：" + Tids + "  Rate_Type：" + Rate_Type.ToString());
            return Rate_Type.ToString() + "#" + Rate_Contect.ToString();
        }

        /// <summary>
        /// 根据订单号查询是否可以进行预订返现
        /// </summary>
        /// <param name="Tids">订单号</param>
        /// <returns>返回值 -1：订单号不存在   -2：这个ID已领取过红包  -3：订单状态不为付款</returns>
        public int GET_Booking_HB_State(string Tid)
        {
            TradeFullinfoGetResponse Trade_Info = TB_TOP.GET_Trade_Fullinfo(Tid);
            if(Trade_Info.Trade==null)
            {
                return -1;
            }
            else if(Class.Booking_HB.get_Seller_Nick_Count(Trade_Info.Trade.BuyerNick)>=1)
            {
                return -2;
            }
            else if(Trade_Info.Trade.Status.ToString()!= "WAIT_SELLER_SEND_GOODS")
            {
                return -3;
            }
            else
            {
                return 1;
            }
        }

        /// <summary>
        /// 获取卖家是否评价
        /// </summary>
        /// <param name="Tid">订单号</param>
        /// <returns></returns>
        private bool get_Seller_rate(string Tid)
        {
            TradeFullinfoGetResponse Trade_Info = TB_TOP.GET_Trade_Fullinfo(Tid);
            return Trade_Info.Trade.SellerRate;
        }

        /// <summary>
        /// 获取买家是否评价
        /// </summary>
        /// <param name="Tid">订单号</param>
        /// <returns></returns>
        private bool get_Buyer_rate(string Tid)
        {
            TradeFullinfoGetResponse Trade_Info = TB_TOP.GET_Trade_Fullinfo(Tid);
            return Trade_Info.Trade.BuyerRate;
        }

        private bool get_Buyer_Rate_Appened_Rate_2(string Tid)
        {
            TmallTraderateFeedsGetResponse Trade_Rate = TB_TOP.Get_Append_Rate(Tid);
            if (Trade_Rate.TmallRateInfo == null)
            {
                return true;

            }
            else if (Trade_Rate.TmallRateInfo.AppendContent==null)
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        private bool get_rate_Type(string Tid)
        {
            TraderateImprImprwordByfeedidGetResponse Trade_Rate = TB_TOP.GET_RATE_DIS(Tid);
            Unit.INSERT_LOG(Trade_Rate.Body.ToString());
            if (Trade_Rate.ErrCode=="15")
            {
                return false;
            }
            else
            {
                return true;
            }
        } 

        public string get_rate_string(string Tid)
        {
            TraderatesGetResponse Trade_Rate = TB_TOP.get_Rate_String(Tid);
            return Trade_Rate.TradeRates[0].Content.Trim().ToString();
        }

        public int get_rate_rate(string Tid)
        {
            TraderateImprImprwordByfeedidGetResponse Trade_Rate = TB_TOP.GET_RATE_DIS(Tid);
            return Convert.ToInt32(Trade_Rate.ImprFeed.Rate);
        }

        private int get_Gods_WhiteList_Type(string Tid)
        {
            TradeFullinfoGetResponse Trade_Info = TB_TOP.GET_Trade_Fullinfo(Tid);
            DataSet Gods_DST= Class.Gods_WhiteList.get_Gods_WhiteList(Seller_Nicks);
            int Gods_Temp = 0;
            for(int i=0;i<Trade_Info.Trade.Orders.Count;i++)
            {
                for(int j=0;j< Gods_DST.Tables[0].Rows.Count;j++)
                {
                    if(Trade_Info.Trade.Orders[i].NumIid.ToString()==
                        Gods_DST.Tables[0].Rows[j][1].ToString())
                    {
                        //存在白名单商品 无条件抛出1
                        Gods_Temp = 1;
                    }
                }
            }
            return Gods_Temp;
        }

        public string Set_Seller_Memo(string Tid,string Memo)
        {
            TradeFullinfoGetResponse Trade_Info = TB_TOP.GET_Trade_Fullinfo(Tid);
            if (Trade_Info.Trade.SellerMemo == null)
            {
                TB_TOP.SET_Memo_Add(Tid, Memo);
            }
            else
            {
                TB_TOP.SET_Memo_Update(Tid,(Trade_Info.Trade.SellerMemo.ToString()+Memo.ToString()));
            }

            return TB_TOP.GET_Trade_Fullinfo(Tid).Trade.SellerMemo.ToString();
        }
    }
}
